package feifei;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/loginServlet2.action")
public class LoginServlet2 extends HttpServlet {
        // 序列化版本号
        private static final long serialVersionUID = 1L;

        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //登录页面 ---->LoginServlet ---->把当前时间打印在页面
            // 1.设置编码字符集
            req.setCharacterEncoding("UTF-8");
            resp.setContentType("text/html;charset=UTF-8");
            // 2. 获取表单数据
            String username = req.getParameter("username");
            String password = req.getParameter("password");
            // 假设你用的用户名为张三  密码为123456
            if ("张三".equals(username) && "123456".equals(password)) {
                // 登录成功
                //首次登录，页面上：欢迎XXX,首次登录，当前时间为：2023/8/14 10:55:30
                // 假设你往session当中存放的一个叫lastTime--->一个时间值
                HttpSession session = req.getSession();
                // 获取lastTime
                String lastTime = (String) session.getAttribute("lastTime");
                // 创建Date对象
                Date nowDate = new Date();
                // 2023/8/14 10:55:30
                DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
                // 格式化为2023/8/14 10:55:30
                String nowTime = dateFormat.format(nowDate);
                if (lastTime == null) {
                    // 代表你是首次登录
                    //页面上：欢迎XXX,首次登录，当前时间为：2023/8/14 10:55:30
                    // 更新上一次的登录时间  覆盖lastTime值
                    session.setAttribute("lastTime",nowTime);
                    // 持久化
                    // 创建Cookie对象
                    Cookie cookie = new Cookie("JSESSIONID", session.getId());
                    cookie.setPath(req.getContextPath());// 设置虚拟路径
                    cookie.setMaxAge(60 * 60 * 24 * 7);// 以7天为周期
                    resp.addCookie(cookie);
                    resp.getWriter().write("首次登录,欢迎" + username + ",您当前的时间为：" + nowTime);
                    return;// 结束当前的方法程序
                } else {
                    // 不是首次登录，登录成功后在页面上显示上一次的登录时间值
                    //欢迎XXX,您的上一次登录时间为2023/8/14 10:55:30，距今已过去了n天  换成毫秒值  /1000/60/60/24 尾数小于1算1
                    try {
                        Date lastDate = dateFormat.parse(lastTime);
                        // 计算过去了多少天 = 当前时间 - 上一次登录时间
                        long numDays = nowDate.getTime() - lastDate.getTime();// 毫秒值
                        // 更新上一次的登录时间  覆盖lastTime值
                        session.setAttribute("lastTime",nowTime);
                        resp.getWriter().write("欢迎" + username + ",您上一次的登录时间为：" + lastTime + ",已过去了" + Math.ceil(numDays/1000d/60/60/24) + "天");
                        return;
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }
                }
            } else {
                // 登录失败
                String url = req.getContextPath() + "/login.html";
                resp.getWriter().write("您的用户名或密码不正确，请重新" + "<a href='" + url + ">登录</a>");
            }
        }
}

